/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useTheme, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {setupItemAreaRoute} from "./orcIspConfig";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {render工作幅, 操纵方式选, 施工许可证子项选,} from "../../tower/craneJj/orcBase";
import {itemA技术见证, itemA结论} from "../../mobilecr/editorIN";
import {施工类别选} from "../../amusement/observJj/orcBase";
import {itemA安监控管} from "./MonitoringSmms";

export const config设备概况 = [
    [['设备所在地点', '_$设备使用地点']],
    [['使用单位名称', '_$使用单位']],
    [['使用单位地址', '_$使用单位地址']],
    [['分支机构', '_$分支机构']],
    [['分支机构地址', '_$分支机构地址']],
    [['使用单位邮政编码', '_$使用单位邮编'], ['使用单位统一社会信用代码', '_$使用单位信用码'] ],
    [['安全管理人员', '安全员'], ['联系电话', '安全员电']],
    [['型号规格', '_$型号'],  ['产品编号', '_$出厂编号'] ],
    [['额定起重量','_$额定起重量','t'], ['生产率','_$生产率','t/h']],
    [['起升高度','_$提升高度','m'], ['跨度','_$跨度','m'],],
    [['起升速度','_$起升速','m/min'], [' ',{r:' '}], ],
    //【特殊，有两个存储字段】 最大工作幅, 最小工作幅
    [['工作幅度','_$最大工作幅',render工作幅],  ['额定起重力矩','_$起重力矩','t·m'] ],
    [['悬臂端有效长度L1','_$悬臂长1','m'],['悬臂端有效长度L2','_$悬臂长2','m']],
    [['变幅速度','_$变幅速度','m/min'], ['回转速度','_$回转速度','r/min'] ],
    [['大车(横移)速度','_$大车速度','m/min'],['小车(纵移)速度','_$小车速度','m/min']],
    [['工作级别','_$工作级别'], ['操纵方式',{n:'操纵方式',t:'l',l:操纵方式选}], ],
    [['注册代码', '_$注册代码'], ['使用登记证编号', '_$使用证号'] ],
    //原版本： ？ 缺少对应的编辑项！ 报告封面需要 '施工类别',
    [['单位内编号','_$单位内部编号'], ['施工类别',{n:'施工类别',t:'l',l:施工类别选}], ],
    [['监控系统生产单位名称','_$监控系统生产单'] ],
    [['监控系统型号', '_$监控系统型号'], ['监控系统产品编号', '_$监控系统编号'], ],
    [['检验类别', '_$检验类别',], ['起重机检验报告编号', '检验报号']],
    [['制造单位名称', '_$制造单位'] ],
    [['施工单位名称',{n:'施工单',t:'B'} ], ],
    [['检验依据',{r:'《起重机械安装改造重大修理监督检验规则》（TSG Q7016-2016)及第1号修改单'}],  ],
];

export const EntranceSetup =
    React.forwardRef((
        {show, alone = true, verId, rep}: InternalItemProps, ref
) => {
    const theme = useTheme();
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const impressionismAs = setupItemAreaRoute({rep, noDefault: true, theme});
        const result = assertNamesUnique([{value: rep?.tzFields}, {value: impressionismAs?.Item, type: 'impr'},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA结论, ...itemA技术见证, ]},
            {value:[...itemA安监控管  ] },
            {value:['unq','仪器表', ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast,theme]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show} alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                    JSON.parse(e.currentTarget.value??'[]');
                    setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});
